package com.cy.login.domain;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import com.fasterxml.jackson.annotation.JsonFormat;

import javax.validation.constraints.Email;
import javax.validation.constraints.Pattern;

/**
 * 账号表(Account)表实体类
 *
 * @author cxy
 * @since 2024-07-10 17:42:38
 */
@EqualsAndHashCode(callSuper = true)
@ApiModel("账号表")
@Data
@SuppressWarnings("serial")
public class Account extends Model<Account> {// swagger2,mybatis-plus
    ///////////////////////////////////////////////////////////////////////////////////////////////////////// 生成实体字段
    @ApiModelProperty("uid 从 1000 开始给用户抢注")
    private Long uid;
    @Email(message = "邮箱格式不正确")
    @ApiModelProperty("邮箱")
    private String email;
    @Pattern(regexp = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d]{8,}$", message = "密码至少8位，至少1个大写字母，1个小写字母和1个数字")
    @ApiModelProperty("密码")
    private String password;
    @ApiModelProperty("创建ip")
    private String createIp;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
    private Date createTime;
    @ApiModelProperty("手机")
    private String mobile;
    @ApiModelProperty("登录ip")
    private String loginIp;
    @ApiModelProperty("最后登录时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
    private Date lastTime;
    @ApiModelProperty("0 未锁定 1锁定")
    private Integer isLock;
    @ApiModelProperty("解封时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
    private Date lockTime;
    ///////////////////////////////////////////////////////////////////////////////////////////////////////// 序列化版本号
    @TableField(exist = false)
    private static final long serialVersionUID = 906869753635019277L;
    /////////////////////////////////////////////////////////////////////////////////////////////////////////// 获取主键值
    @Override
    protected Serializable pkVal() {
        return this.uid;
    }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////// 非数据库字段
    @ApiModelProperty("token")
    @TableField(exist = false)
    private String token;
}

